XX性欧美肥妇精品久久久久久,51精品国自产在线,国产欧美日韩,日韩中文字幕

0 賣盤(pán)信息
BOM詢價(jià)
電子百科詞庫(kù) >單片機(jī)

單片機(jī)

[ 瀏覽次數(shù):約3264次 ] 發(fā)布日期:2017-06-19


單片機(jī)(Microcontrollers)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。

單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。

單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞——“智能型”,如智能型洗衣機(jī)等。

單片機(jī)




目錄
單片機(jī)分類
單片機(jī)特性
單片機(jī)結(jié)構(gòu)
單片機(jī)應(yīng)用
單片機(jī)基礎(chǔ)知識(shí)
單片機(jī)學(xué)習(xí)方法
51單片機(jī)的結(jié)構(gòu)與功能
單片機(jī)攻擊技術(shù)
單片機(jī)故障的排除
單片機(jī)發(fā)展現(xiàn)狀

單片機(jī)分類

單片機(jī)(Microcontrollers)作為計(jì)算機(jī)發(fā)展的一個(gè)重要分支領(lǐng)域,根據(jù)發(fā)展情況,從不同角度,單片機(jī)大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。

通用型

這是按單片機(jī)(Microcontrollers)適用范圍來(lái)區(qū)分的。例如,80C51式通用型單片機(jī),它不是為某種專門用途設(shè)計(jì)的;專用型單片機(jī)是針對(duì)一類產(chǎn)品甚至某一個(gè)產(chǎn)品設(shè)計(jì)生產(chǎn)的,例如為了滿足電子體溫計(jì)的要求,在片內(nèi)集成ADC接口等功能的溫度測(cè)量控制電路。

單片機(jī)


總線型

這是按單片機(jī)(Microcontrollers)是否提供并行總線來(lái)區(qū)分的??偩€型單片機(jī)普遍設(shè)置有并行地址總線、 數(shù)據(jù)總線、控制總線,這些引腳用以擴(kuò)展并行外圍器件都可通過(guò)串行口與單片機(jī)連接,另外,許多單片機(jī)已把所需要的外圍器件及外設(shè)接口集成一片內(nèi),因此在許多情況下可以不要并行擴(kuò)展總線,大大減省封裝成本和芯片體積,這類單片機(jī)稱為非總線型單片機(jī)。

控制型

這是按照單片機(jī)(Microcontrollers)大致應(yīng)用的領(lǐng)域進(jìn)行區(qū)分的。一般而言,工控型尋址范圍大,運(yùn)算能力強(qiáng);用于家電的單片機(jī)多為專用型,通常是小封裝、低價(jià)格,外圍器件和外設(shè)接口集成度高。 顯然,上述分類并不是惟一的和嚴(yán)格的。例如,80C51類單片機(jī)既是通用型又是總線型,還可以作工控用。


單片機(jī)特性

芯片

芯片

1、主流單片機(jī)包括CPU、4KB容量的RAM、128 KB容量的ROM、 2個(gè)16位定時(shí)/計(jì)數(shù)器、4個(gè)8位并行口、全雙工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。

2、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,實(shí)現(xiàn)模塊化;

3、單片機(jī)可靠性高,可工作到10^6 ~10^7小時(shí)無(wú)故障;

4、處理功能強(qiáng),速度快。

5、低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品

6、控制功能強(qiáng)

7、環(huán)境適應(yīng)能力強(qiáng)。


單片機(jī)結(jié)構(gòu)

運(yùn)算器

運(yùn)算器由運(yùn)算部件——算術(shù)邏輯單元(Arithmetic & Logical Unit,簡(jiǎn)稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來(lái)的數(shù)據(jù)進(jìn)行算術(shù)或邏輯運(yùn)算,輸入來(lái)源為兩個(gè)8位數(shù)據(jù),分別來(lái)自累加器和數(shù)據(jù)寄存器。ALU能完成對(duì)這兩個(gè)數(shù)據(jù)進(jìn)行加、減、與、或、比較大小等操作,最后將結(jié)果存入累加器。例如,兩個(gè)數(shù)6和7相加,在相加之前,操作數(shù)6放在累加器中,7放在數(shù)據(jù)寄存器中,當(dāng)執(zhí)行加法指令時(shí),ALU即把兩個(gè)數(shù)相加并把結(jié)果13存入累加器,取代累加器原來(lái)的內(nèi)容6。

運(yùn)算器有兩個(gè)功能:

(1) 執(zhí)行各種算術(shù)運(yùn)算。

(2) 執(zhí)行各種邏輯運(yùn)算,并進(jìn)行邏輯測(cè)試,如零值測(cè)試或兩個(gè)值的比較。

運(yùn)算器所執(zhí)行全部操作都是由控制器發(fā)出的控制信號(hào)來(lái)指揮的,并且,一個(gè)算術(shù)操作產(chǎn)生一個(gè)運(yùn)算結(jié)果,一個(gè)邏輯操作產(chǎn)生一個(gè)判決。

控制器

控制器由程序計(jì)數(shù)器、指令寄存器、指令譯碼器、時(shí)序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機(jī)構(gòu)”,即協(xié)調(diào)和指揮整個(gè)微機(jī)系統(tǒng)的操作。其主要功能有:

(1) 從內(nèi)存中取出一條指令,并指出下一條指令在內(nèi)存中的位置。

(2) 對(duì)指令進(jìn)行譯碼和測(cè)試,并產(chǎn)生相應(yīng)的操作控制信號(hào),以便于執(zhí)行規(guī)定的動(dòng)作。

(3) 指揮并控制CPU、內(nèi)存和輸入輸出設(shè)備之間數(shù)據(jù)流動(dòng)的方向。

微處理器內(nèi)通過(guò)內(nèi)部總線把ALU、計(jì)數(shù)器、寄存器和控制部分互聯(lián),并通過(guò)外部總線與外部的存儲(chǔ)器、輸入輸出接口電路聯(lián)接。外部總線又稱為系統(tǒng)總線,分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB。通過(guò)輸入輸出接口電路,實(shí)現(xiàn)與各種外圍設(shè)備連接。

主要寄存器

(1)累加器A

圖1-2 單片機(jī)組成框圖

累加器A是微處理器中使用最頻繁的寄存器。在算術(shù)和邏輯運(yùn)算時(shí)它有雙功能:運(yùn)算前,用于保存一個(gè)操作數(shù);運(yùn)算后,用于保存所得的和、差或邏輯運(yùn)算結(jié)果。

(2)數(shù)據(jù)寄存器DR

數(shù)據(jù)寄存器通過(guò)數(shù)據(jù)總線向存儲(chǔ)器和輸入/輸出設(shè)備送(寫(xiě))或?。ㄗx)數(shù)據(jù)的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲(chǔ)器中存儲(chǔ)的一個(gè)數(shù)據(jù)字節(jié)等等。

(3)指令寄存器IR和指令譯碼器ID

指令包括操作碼和操作數(shù)。

指令寄存器是用來(lái)保存當(dāng)前正在執(zhí)行的一條指令。當(dāng)執(zhí)行一條指令時(shí),先把它從內(nèi)存中取到數(shù)據(jù)寄存器中,然后再傳送到指令寄存器。當(dāng)系統(tǒng)執(zhí)行給定的指令時(shí),必須對(duì)操作碼進(jìn)行譯碼,以確定所要求的操作,指令譯碼器就是負(fù)責(zé)這項(xiàng)工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。

(4)程序計(jì)數(shù)器PC

PC用于確定下一條指令的地址,以保證程序能夠連續(xù)地執(zhí)行下去,因此通常又被稱為指令地址計(jì)數(shù)器。在程序開(kāi)始執(zhí)行前必須將程序的第一條指令的內(nèi)存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執(zhí)行指令的地址。

(5)地址寄存器AR

地址寄存器用于保存當(dāng)前CPU所要訪問(wèn)的內(nèi)存單元或I/O設(shè)備的地址。由于內(nèi)存與CPU之間存在著速度上的差異,所以必須使用地址寄存器來(lái)保持地址信息,直到內(nèi)存讀/寫(xiě)操作完成為止。

顯然,當(dāng)CPU向存儲(chǔ)器存數(shù)據(jù)、CPU從內(nèi)存取數(shù)據(jù)和CPU從內(nèi)存讀出指令時(shí),都要用到地址寄存器和數(shù)據(jù)寄存器。同樣,如果把外圍設(shè)備的地址作為內(nèi)存地址單元來(lái)看的話,那么當(dāng)CPU和外圍設(shè)備交換信息時(shí),也需要用到地址寄存器和數(shù)據(jù)寄存器。


單片機(jī)應(yīng)用

電路板

電路板

單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開(kāi)單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開(kāi)發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。

單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:

智能儀器

單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、電流、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長(zhǎng)度、硬度、元素、壓力等物理量的測(cè)量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。

例如精密的測(cè)量設(shè)備(電壓表、功率計(jì),示波器,各種分析儀)。

工業(yè)控制

單片機(jī)具有體積小、控制功能強(qiáng)、功耗低、環(huán)境適應(yīng)能力強(qiáng)、擴(kuò)展靈活和使用方便等優(yōu)點(diǎn),用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、通信系統(tǒng)、信號(hào)檢測(cè)系統(tǒng)、無(wú)線感知系統(tǒng)、測(cè)控系統(tǒng)、機(jī)器人等應(yīng)用控制系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。

家用電器

家用電器廣泛采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備和白色家電等。

網(wǎng)絡(luò)和通信

現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車無(wú)線通信、再到日常工作中隨處可見(jiàn)的移動(dòng)電話,集群移動(dòng)通信,無(wú)線電對(duì)講機(jī)等。

設(shè)備領(lǐng)域

單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。

模塊化系統(tǒng)

某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂(lè)集成單片機(jī),看似簡(jiǎn)單的功能,微縮在純電子芯片中(有別于磁帶機(jī)的原理),就需要復(fù)雜的類似于計(jì)算機(jī)的原理。如:音樂(lè)信號(hào)以數(shù)字的形式存于存儲(chǔ)器中(類似于ROM),由微控制器讀出,轉(zhuǎn)化為模擬音樂(lè)電信號(hào)(類似于聲卡)。

在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡(jiǎn)化了電路,降低了損壞、錯(cuò)誤率,也方便于更換。

汽車電子

單片機(jī)在汽車電子中的應(yīng)用非常廣泛,例如汽車中的發(fā)動(dòng)機(jī)控制器,基于CAN總線的汽車發(fā)動(dòng)機(jī)智能電子控制器、GPS導(dǎo)航系統(tǒng)、abs防抱死系統(tǒng)、制動(dòng)系統(tǒng)、胎壓檢測(cè)等。

此外,單片機(jī)在工商、金融、科研、教育、電力、通信、物流和國(guó)防航空航天等領(lǐng)域都有著十分廣泛的用途。


單片機(jī)基礎(chǔ)知識(shí)

本段僅針對(duì)硬件設(shè)計(jì)人員和軟件設(shè)計(jì)人員,為了便于對(duì)硬件的理解要有一定的匯編語(yǔ)言基礎(chǔ)。

總線

我們知道,一個(gè)電路總是由元器件通過(guò)電線連接而成的,在模擬電路中,連線并不成為一個(gè)問(wèn)題,因?yàn)楦髌骷g一般是串行關(guān)系,各器件之間的連線并不很多,但計(jì)算機(jī)電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨(dú)連線,則線的數(shù)量將多得驚人,所以在微處理機(jī)中引入了總線的概念,各個(gè)器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當(dāng)于各個(gè)器件并聯(lián)起來(lái),但僅這樣還不行,如果有兩個(gè)器件同時(shí)送出數(shù)據(jù),一個(gè)為0,一個(gè)為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過(guò)控制線進(jìn)行控制,使器件分時(shí)工作,任何時(shí)候只能有一個(gè)器件發(fā)送數(shù)據(jù)(可以有多個(gè)器件同時(shí)接收)。器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線,器件所有的控制線被稱為控制總線。在單片機(jī)內(nèi)部或者外部存儲(chǔ)器及其它器件中有存儲(chǔ)單元,這些存儲(chǔ)單元要被分配地址,才能使用,分配地址當(dāng)然也是以電信號(hào)的形式給出的,由于存儲(chǔ)單元比較多,所以,用于地址分配的線也較多,這些線被稱為地址總線。

地址指令

這三者的本質(zhì)都是一樣的——數(shù)字,或者說(shuō)都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機(jī)芯片的設(shè)計(jì)者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴(yán)格的一一對(duì)應(yīng)關(guān)系,不可以由單片機(jī)的開(kāi)發(fā)者更改。地址:是尋找單片機(jī)內(nèi)部、外部的存儲(chǔ)單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設(shè)計(jì)者規(guī)定好,不可更改,外部的單元可以由單片機(jī)開(kāi)發(fā)者自行決定,但有一些地址單元是一定要有的(詳見(jiàn)程序的執(zhí)行過(guò)程)。數(shù)據(jù):這是由微處理機(jī)處理的對(duì)象,在各種不同的應(yīng)用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能有這么幾種情況:

1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。

2.方式字或控制字(如MOV TMOD,#3),3即是控制字。

3.常數(shù)(如MOV TH0,#10H)10H即定時(shí)常數(shù)。

4.實(shí)際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實(shí)際輸出值。又如用于LED的字形碼,也是實(shí)際輸出的值。

理解了地址、指令的本質(zhì),就不難理解程序運(yùn)行過(guò)程中為什么會(huì)跑飛,會(huì)把數(shù)據(jù)當(dāng)成指令來(lái)執(zhí)行了。

功能

初學(xué)時(shí)往往對(duì)P0口、P2口和P3口的第二功能用法迷惑不解,認(rèn)為第二功能和原功能之間要有一個(gè)切換的過(guò)程,或者說(shuō)要有一條指令,事實(shí)上,各端口的第二功能完全是自動(dòng)的,不需要用指令來(lái)轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號(hào),當(dāng)微處理機(jī)外接RAM或有外部I/O口時(shí),它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機(jī)一執(zhí)行到MOVX指令,就會(huì)有相應(yīng)的信號(hào)從P3.6或P3.7送出,不需要事先用指令說(shuō)明。事實(shí)上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會(huì)’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當(dāng)單片機(jī)執(zhí)行到這條指令時(shí),也會(huì)使P3.7變?yōu)楦唠娖?,但使用者不?huì)這么去做,因?yàn)檫@通常會(huì)導(dǎo)致系統(tǒng)的崩潰。

執(zhí)行過(guò)程

單片機(jī)在通電復(fù)位后8051內(nèi)的程序計(jì)數(shù)器(PC)中的值為‘0000’,所以程序總是從‘0000’單元開(kāi)始執(zhí)行,也就是說(shuō):在系統(tǒng)的ROM中一定要存在‘0000’這個(gè)單元,并且在‘0000’單元中存放的一定是一條指令。

堆棧

堆棧是一個(gè)區(qū)域,是用來(lái)存放數(shù)據(jù)的,這個(gè)區(qū)域本身沒(méi)有任何特殊之處,就是內(nèi)部RAM的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的‘先進(jìn)后出,后進(jìn)先出’,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即‘PUSH’和‘POP’,有一個(gè)特殊的專為其服務(wù)的單元,即堆棧指針SP,每當(dāng)執(zhí)一次PUSH指令時(shí),SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)加1,每當(dāng)執(zhí)行一次POP指令,SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)減1。由于SP中的值可以用指令加以改變,所以只要在程序開(kāi)始階段更改了SP的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開(kāi)始時(shí),用一條MOV SP,#5FH指令,就是把堆棧設(shè)置在從內(nèi)存單元60H開(kāi)始的單元中。一般程序的開(kāi)頭總有這么一條設(shè)置堆棧指針的指令,因?yàn)殚_(kāi)機(jī)時(shí),SP的初始值為07H,這樣就使堆棧從08H單元開(kāi)始往后,而08H到1FH這個(gè)區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會(huì)造成數(shù)據(jù)的混亂。不同作者編寫(xiě)程序時(shí),初始化堆棧指令也不完全相同,這是作者的習(xí)慣問(wèn)題。當(dāng)設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會(huì)把它當(dāng)成普通內(nèi)存用了。

開(kāi)發(fā)過(guò)程

這里所說(shuō)的開(kāi)發(fā)過(guò)程并不是一般書(shū)中所說(shuō)的從任務(wù)分析開(kāi)始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫(xiě)軟件的工作。在編寫(xiě)軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來(lái)了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來(lái)后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫(xiě)軟件,編寫(xiě)好后,用編譯器對(duì)源程序文件編譯,查錯(cuò),直到?jīng)]有語(yǔ)法錯(cuò)誤,除了極簡(jiǎn)單的程序外,一般應(yīng)用仿真機(jī)對(duì)軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫(xiě)片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識(shí)別這種格式的文件,只要將此文件調(diào)入即可寫(xiě)片。在此,為使大家對(duì)整個(gè)過(guò)程有個(gè)認(rèn)識(shí),舉一例說(shuō)明:

單片機(jī)試驗(yàn)板

單片機(jī)試驗(yàn)板

ORG 0000H

LJMP START

ORG 040H

START:

MOV SP,#5FH ;設(shè)堆棧

LOOP:

NOP

LJMP LOOP ;循環(huán)

END ;結(jié)束

單片指令

傳送操作

助記符代碼 說(shuō)明

MOV A,Rn E8~EF寄存器A

MOV A,direct E5 direct 直接字節(jié)送A

MOV A,@Ri ER~E7 間接RAM送A

MOV A,#data 74 data立即數(shù)送A

MOV Rn,A F8~FF A送寄存器

MOV Rn,direct A8~AF direct 直接字節(jié)送寄存器

MOV Rn,#data 78~7F data立即數(shù)送寄存器

MOV direct,A F5 direct A送直接字節(jié)

MOV direct,Rn 88~8F direct 寄存器送直接字節(jié)

MOV direct1,direct2 85 direct1 direct2 直接字節(jié)送直接字節(jié)

MOV direct,@Ro 86~87 間接RAM送直接字節(jié)

MOV direct,#data 75 direct data立即數(shù)送直接字節(jié)

MOV @Ri,A F6~F7 A送間接RAM

MOV @Ri,direct 76~77 direct 直接字節(jié)送間接RAM

MOV @Ri,#data 76~77 data 立即數(shù)送間接RAM

MOV DPTR,#data16 90 data 15~8 16位常數(shù)送數(shù)據(jù)指針

data7~0

MOVC A,@A+DPTR 93 由((A)+(DPTR))尋址的程序存貯

器字節(jié)選A

MOVC A,@A+PC 83 由((A)+(PC));尋址的程序存貯器字節(jié)送A

MOVX A,@Ri E2~E3 送外部數(shù)據(jù)(8位地址)送A

MOVX A,@DPTR E0 送外部數(shù)據(jù)(16位地址)送A

MOVX @Ri,A F2~F3 A送外部數(shù)據(jù)(8位地址)

MOVX @DPTR,A F0 A送外部數(shù)據(jù)(16位地址)

PUSH direct C0 direct 直接字節(jié)進(jìn)棧,SP加1

POP direct D0 direct 直接字節(jié)退棧,SP減1

XCH A,Rn C8~CF 交換A和寄存器

XCH A,direct C5 direct 交換A和直接字節(jié)

XCH A,@Ri C6~C7 交換A和間接RAM

XCH A,@Ri D6~D7 交換A和間接RAM的低位

SWAP A C4

算術(shù)操作

(A的二個(gè)半字節(jié)交換)

ADD A,Rn 28~2F 寄存器加到A

ADD A,direct 25 direct 直接字節(jié)加到A

ADD A,@Ri 26~27 間接RAM加到A

ADD A,#data 24data立即數(shù)加到A

ADD A,Rn 38~3F 寄存器和進(jìn)位位加到A

ADD A,direct 35direct 直接字節(jié)和進(jìn)位位加到A

ADD A,@Ri 36~37 間接字節(jié)和進(jìn)位位加到A

ADD A,data 34 data立即數(shù)和進(jìn)位位加到A

ADD A,Rn 98~9F A減去寄存器和進(jìn)位位

ADD A,direct 95 direct A減去直接字節(jié)和進(jìn)位位

ADD A,@Ri 36~37 間接RAM和進(jìn)位位加到A

ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A

SUBB A,Rn 98~9F A減去寄存器和進(jìn)位位

SUBB A,direct 95 direct A減去直接字節(jié)和進(jìn)位位

SUBB A,@Ri 96~97 A減去間接RAM和進(jìn)位位

SUBB A,#data 94 data A減去立即數(shù)和進(jìn)位位

INC A 04 A加1

INC Rn 08~0F 寄存器加1

INC direct 05 direct 直接字節(jié)加1

INC @Ri 06~07 間接RAM加1

DEC A 14 A減1

DEC Rn 18~1F 寄存器減1

DEC direct 15 direct 直接字節(jié)減1

DEC @Ri 16~17 間接RAM減1

INC DPTR A3 數(shù)據(jù)指針加1

MUL AB A4 A乘以B

DIV AB 84 A除以B

DA A D4 A的十進(jìn)制加法調(diào)整

邏輯操作

ANL A,Rn 58~5F 寄存器“與”到A

ANL A,direct 55 direct 直接字節(jié)“與”到A

ANL A,@Ri 56~57 間接RAm“與”到A

ANL A,#data 54 data立即數(shù)“與”到A

ANL direct A 52 direct A“與”到直接字節(jié)

ANL direct,#data 53 direct data立即數(shù)“與”到直接字節(jié)

ORL A,Rn 48~4F 寄存器“或”到A

ORL A,direct 45 direct 直接字節(jié)“或”到A

ORL A,@Ri 46~47 間接RAM“或”到A

ORL A,#data 44 data立即數(shù)“或”到A

ORL direct,A 42 direct A“或”到直接字節(jié)

ORL direct,#data 43 direct data立即數(shù)“或”到直接字節(jié)

XRL A,Rn 68~6F 寄存器“異或”到A

XRL A,direct 65 direct 直接字節(jié)“異或”到A

XRL A,@Ri 66~67 間接RAM“異或”到A

XRL A,#data 64 data立即數(shù)“異或”到A

XRL direct A 62 direct A“異或”到直接字節(jié)

XRL direct,#data 63 direct data立即數(shù)“異或”到直接字節(jié)

CLR A E4 清零

CPL A F4 A取反

RL A 23 A左環(huán)移

RLC A 33 A通過(guò)進(jìn)位左環(huán)移

RR A 03 A右環(huán)移

RRC A 13 A通過(guò)進(jìn)位右環(huán)移

程序轉(zhuǎn)移

ACALL addr 11 *1 addr(a7~a0) 絕對(duì)子程序調(diào)用

LCALL addr 16 12 addr(15~8) 長(zhǎng)子程序調(diào)用

addr(7~0)

RET 22子程序調(diào)用返回

RETI addr 11 32 中斷調(diào)用返回

AJMP addr 11 △1 addr(a7~a6) 絕對(duì)轉(zhuǎn)移

LJMP addr 16 02addr(15~8) 長(zhǎng)轉(zhuǎn)移

addr(7~0)

SJMP rel 80 rel 短轉(zhuǎn)移,相對(duì)轉(zhuǎn)移

JMP @A+DPTR 73 相對(duì)于DPTR間接轉(zhuǎn)移

JZ rel 60 rel A為零轉(zhuǎn)移

JNZ rel 70 rel A為零轉(zhuǎn)移

CJNE A,direct,rel B5 direct rel 直接字節(jié)與A比較,不等則轉(zhuǎn)移

CJNE A,#data,rel B4 data rel立即數(shù)與A比較,不等則轉(zhuǎn)移

CJNE A,Rn,#data,rel B8~BF data rel立即數(shù)與寄存器比較,不等則轉(zhuǎn)移

CJNE @Ri,#data,rel B6~B7 data rel立即數(shù)與間接RAM比較,不等則轉(zhuǎn)移

DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉(zhuǎn)移

DJNZ direct,rel B5 direct rel 直接字節(jié)減1,不為零則轉(zhuǎn)移

NOP 00 空操作

布爾變量操作

CLR C C3 清零進(jìn)位

CLR bit C2 清零直接位

SETB C D3 置位進(jìn)位

SETB bit D2 置位直接位

CPL C B3 進(jìn)位取反

CPL bit B2 直接位取反

ANL C,bit 82 dit 直接數(shù)“與”到進(jìn)位

ANL C,/bit B0 直接位的反“與”到進(jìn)位

ORL C,bit 72 bit 直接位“或”到進(jìn)位

ORL C,/bit A0 bit 直接位的反“或”到進(jìn)位

MOV C,bit A2 bit 直接位送進(jìn)位

MOV bit,C 92 bit 進(jìn)位送直接位

JC rel 40 rel 進(jìn)位位為1轉(zhuǎn)移

JNC rel 50 rel 進(jìn)位位為0轉(zhuǎn)移

JB bit,rel 20 bit rel 直接位為1相對(duì)轉(zhuǎn)移

JNB bit,rel 30 bit rel 直接位為0相對(duì)轉(zhuǎn)移

JBC bit,rel 10 bit rel 直接位為1相對(duì)轉(zhuǎn)移,然后清零該位

單片機(jī)芯片

STC單片機(jī)

STC公司的單片機(jī)主要是基于8051內(nèi)核,是新一代增強(qiáng)型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號(hào),加密性好,抗干擾強(qiáng).

PIC單片機(jī)

是MICROCHIP公司的產(chǎn)品,其突出的特點(diǎn)是體積小,功耗低,精簡(jiǎn)指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲(chǔ)器的芯片.

EMC單片機(jī):

是臺(tái)灣義隆公司的產(chǎn)品,有很大一部分與PIC 8位單片機(jī)兼容,且相兼容產(chǎn)品的資源相對(duì)比PIC的多,價(jià)格便宜,有很多系列可選,但抗干擾較差.

ATMEL單片機(jī)(51單片機(jī)):

ATMEl公司的8位單片機(jī)有AT89、AT90兩個(gè)系列,AT89系列是8位Flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時(shí)鐘模式;AT90系列單片機(jī)是增強(qiáng)RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機(jī),也叫AVR單片機(jī).

PHLIPIS 51LPC系列單片機(jī)(51單片機(jī)):

PHILIPS公司的單片機(jī)是基于80C51內(nèi)核的單片機(jī),嵌入了掉電檢測(cè)、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計(jì)中可以滿足多方面的性能要求.

HOLTEK單片機(jī):

臺(tái)灣盛揚(yáng)半導(dǎo)體的單片機(jī),價(jià)格便宜,種類較多,但抗干擾較差,適用于消費(fèi)類產(chǎn)品.

TI公司單片機(jī)(51單片機(jī)):

德州儀器提供了TMS370和MSP430兩大系列通用單片機(jī).TMS370系列單片機(jī)是8位CMOS單片機(jī),具有多種存儲(chǔ)模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時(shí)控制場(chǎng)合;MSP430系列單片機(jī)是一種超低功耗、功能集成度較高的16位低功耗單片機(jī),特別適用于要求功耗低的場(chǎng)合

松翰單片機(jī)(SONIX):

是臺(tái)灣松翰公司的單片,大多為8位機(jī),有一部分與PIC 8位單片機(jī)兼容,價(jià)格便宜,系統(tǒng)時(shí)鐘分頻可選項(xiàng)較多,有PMW ADC 內(nèi)振 內(nèi)部雜訊濾波。缺點(diǎn)RAM空間過(guò)小,抗干擾較好。

飛思卡爾單片機(jī)

飛思卡爾 8 位單片機(jī)系列主要包括 RS08 類、HCS08 類、HC08 類、HC08 汽車類、 HCS08 汽車類。

英飛凌單片機(jī)

英飛凌單片機(jī)的XC82x和XC83x單片機(jī)系列經(jīng)過(guò)專門設(shè)計(jì),可進(jìn)一步在各種工業(yè)領(lǐng)域內(nèi)降低系統(tǒng)成本,提高能效。

深聯(lián)華單片機(jī)(51單片機(jī))

深聯(lián)華公司的單片機(jī)主要是基于8051內(nèi)核,是新一代安全防逆向型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶有62 K FLASH ROM,內(nèi)置256字節(jié)RAM和集成外置1024字節(jié)RAM,白噪聲密碼-沒(méi)有規(guī)律可循,每顆芯片都有自己的密碼,同樣的密碼不可重用。

三星單片機(jī)

三星單片機(jī)有KS51和KS57系列4位單片機(jī),KS86和KS88系列8位單片機(jī),KS17系列16位單片機(jī)和KS32系列32位單片機(jī),三星還為ARM公司生產(chǎn)ARM單片機(jī),常見(jiàn)的S344b0等.三星單片機(jī)為OTP型ISP在片編程功能.

SST 單片機(jī)

美國(guó)SST公司推出的SST89系列單片機(jī)為標(biāo)準(zhǔn)的51系列單片機(jī),包括SST89E/V52RD2, SST89E/V54RD2,SST89E/V58RD2,SST89E/V554RC,SST89E/V564RD等.它與8052系列單片機(jī)兼容.提供系統(tǒng)在線編程(ISP功能).內(nèi)部flash擦寫(xiě)次數(shù)1萬(wàn)次以上,程序保存時(shí)間可達(dá)100年.

還有很多優(yōu)秀的單片機(jī)生產(chǎn)企業(yè)這里沒(méi)有收集,每個(gè)企業(yè)都有自己的特點(diǎn),大家根據(jù)需要選擇單片機(jī),在完全實(shí)現(xiàn)功能的前提下追求低價(jià)位,當(dāng)然并不是這樣最好,實(shí)際中選擇單片機(jī)跟開(kāi)發(fā)者的應(yīng)用習(xí)慣和開(kāi)發(fā)經(jīng)驗(yàn)是密不可分的.


單片機(jī)學(xué)習(xí)方法

基礎(chǔ)理論

基礎(chǔ)理論知識(shí)包括模擬電路、數(shù)字電路和C語(yǔ)言知識(shí)。模擬電路和數(shù)字電路屬于抽象學(xué)科,要把它學(xué)好還得費(fèi)點(diǎn)精神。在你學(xué)習(xí)單片機(jī)之前,覺(jué)得模擬電路和數(shù)字電路基礎(chǔ)不好的話,不要急著學(xué)習(xí)單片機(jī),應(yīng)該先回顧所學(xué)過(guò)的模擬電路和數(shù)字電路知識(shí),為學(xué)習(xí)單片機(jī)加強(qiáng)基礎(chǔ)。否則,你的單片機(jī)學(xué)習(xí)之路不僅會(huì)很艱難和漫長(zhǎng),還可能半途而廢。筆者始終認(rèn)為,扎實(shí)的電子技術(shù)基礎(chǔ)是學(xué)好單片機(jī)的關(guān)鍵,直接影響單片機(jī)學(xué)習(xí)入門的快慢。有些同學(xué)覺(jué)得單片機(jī)很難,越學(xué)越復(fù)雜,最后學(xué)不下去了。有的同學(xué)看書(shū)時(shí)似乎明白了,可是動(dòng)起手來(lái)卻一塌糊涂,究其原因就是電子技術(shù)基礎(chǔ)沒(méi)有打好,首先被表面知識(shí)給困惑了。

單片機(jī)屬于數(shù)字電路,其概念、術(shù)語(yǔ)、硬件結(jié)構(gòu)和原理都源自數(shù)字電路,如果數(shù)字電路基礎(chǔ)扎實(shí),對(duì)復(fù)雜的單片機(jī)硬件結(jié)構(gòu)和原理就能容易理解,就能輕松地邁開(kāi)學(xué)習(xí)的第一步,自信心也會(huì)樹(shù)立起來(lái)。相反,基礎(chǔ)不好,這個(gè)看不懂那個(gè)也弄不明白,越學(xué)問(wèn)題越多,越學(xué)越?jīng)]有信心。如果你覺(jué)得單片機(jī)很難,那就應(yīng)該先放下單片機(jī)教材,去重溫?cái)?shù)字電路,搞清楚觸發(fā)器、寄存器、門電路、COMS電路、時(shí)序邏輯和時(shí)序圖、進(jìn)制轉(zhuǎn)換等理論知識(shí)。理解了這些知識(shí)之后再去看看單片機(jī)的結(jié)構(gòu)和原理,我想你會(huì)大徹大悟,信心倍增。

模擬電路是電子技術(shù)最基礎(chǔ)的學(xué)科,它讓你知道什么是電阻、電容、電感、二極管、三極管、場(chǎng)效應(yīng)管、放大器等等以及它們的工作原理和在電路中的作用,這是學(xué)習(xí)電子技術(shù)必須掌握的基礎(chǔ)知識(shí)。一般是先學(xué)習(xí)模擬電路再去學(xué)習(xí)數(shù)字電路。扎實(shí)的模擬電路基礎(chǔ)不僅讓你容易看懂別人設(shè)計(jì)的電路,而且讓你的設(shè)計(jì)的電路更可靠,提高產(chǎn)品質(zhì)量。

單片機(jī)的學(xué)習(xí)離不開(kāi)編程,在所有的程序設(shè)計(jì)中C語(yǔ)言運(yùn)用的最為廣泛。C語(yǔ)言知識(shí)并不難,沒(méi)有任何編程基礎(chǔ)的人都可以學(xué),在我看來(lái),初中生、高中生、中專生、大學(xué)生都能學(xué)會(huì)。當(dāng)然,數(shù)學(xué)基礎(chǔ)好、邏輯思維好的人學(xué)起來(lái)相對(duì)輕松一些。C語(yǔ)言需要掌握的知識(shí)就那么3個(gè)條件判斷語(yǔ)句、3個(gè)循環(huán)語(yǔ)句、3個(gè)跳轉(zhuǎn)語(yǔ)句和1個(gè)開(kāi)關(guān)語(yǔ)句。別小看這10個(gè)語(yǔ)句,用他們組合形成的邏輯要多復(fù)雜有多復(fù)雜。學(xué)習(xí)時(shí)要一條語(yǔ)句一條語(yǔ)句的學(xué),學(xué)一條活用一條,全部學(xué)過(guò)用過(guò)這些關(guān)鍵語(yǔ)句后,相信你的C基礎(chǔ)建立了。

當(dāng)基礎(chǔ)打好以后,你會(huì)感覺(jué)到單片機(jī)不再難學(xué)了,而且越學(xué)越起勁。當(dāng)單片機(jī)乖乖的依照你的邏輯思維和算法去執(zhí)行指令,實(shí)現(xiàn)預(yù)期控制效果的時(shí)候,成就感會(huì)讓你信心十足、夜以續(xù)日、廢寢忘食的投入到單片機(jī)的世界里??梢赃@么說(shuō),扎實(shí)的電子技術(shù)基礎(chǔ)和C語(yǔ)言基礎(chǔ)能增強(qiáng)學(xué)習(xí)單片機(jī)信心,較快掌握單片機(jī)技術(shù)。

實(shí)驗(yàn)實(shí)踐

這是真正學(xué)習(xí)單片機(jī)的過(guò)程,既讓人興奮又讓人疲憊,既讓人無(wú)奈又讓人不服,既讓人孤獨(dú)又讓人充實(shí),既讓人氣憤又讓人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有學(xué)過(guò)的人深有體會(huì)。思想上要有刻苦學(xué)習(xí)的決心,硬件上要有一套完整的學(xué)習(xí)開(kāi)發(fā)工具,軟件上要注重理論和實(shí)踐相結(jié)合。

1.有刻苦學(xué)習(xí)的決心

首先,明確學(xué)習(xí)目的。先認(rèn)真回答兩個(gè)問(wèn)題:我學(xué)單片機(jī)來(lái)做什么?需要多長(zhǎng)時(shí)間把它學(xué)會(huì)?這是你學(xué)單片機(jī)的動(dòng)力。沒(méi)有動(dòng)力,我想你堅(jiān)持不了多久。其次,端正學(xué)習(xí)心態(tài)。單片機(jī)學(xué)習(xí)過(guò)程是枯燥乏味、孤獨(dú)寂寞的過(guò)程。要知道,學(xué)習(xí)知識(shí)沒(méi)有捷徑,只有循序漸進(jìn),腳踏實(shí)地,一步一個(gè)腳印,才能學(xué)到真功夫。再次,要多動(dòng)腦勤動(dòng)手。單片機(jī)的學(xué)習(xí)具有很強(qiáng)的實(shí)踐性,是一門很注重實(shí)際動(dòng)手操作的技術(shù)學(xué)科。不動(dòng)手實(shí)踐你是學(xué)不會(huì)單片機(jī)的。最后,虛心交流。在單片機(jī)學(xué)習(xí)過(guò)程中每個(gè)人都會(huì)遇到無(wú)數(shù)不能解決的問(wèn)題,需要你向有經(jīng)驗(yàn)的過(guò)來(lái)人虛心求教,否則,一味的自己埋頭摸索會(huì)走許多彎路,浪費(fèi)很多時(shí)間。

2.有一套完整的學(xué)習(xí)開(kāi)發(fā)工具

學(xué)習(xí)單片機(jī)是需要成本的。必須有一臺(tái)電腦、一塊單片機(jī)開(kāi)發(fā)板(如果開(kāi)發(fā)板不能直接下載程序代碼的話還得需要一個(gè)編程器)、一套視頻教程、一本單片機(jī)教材和一本C語(yǔ)言教材。電腦是用來(lái)編寫(xiě)和編譯程序,并將程序代碼下載到單片機(jī)上;開(kāi)發(fā)板用來(lái)運(yùn)行單片機(jī)程序,驗(yàn)證實(shí)際效果;視頻教程就是手把手教你單片機(jī)開(kāi)發(fā)環(huán)境的使用、單片機(jī)編程和調(diào)試。對(duì)于單片機(jī)初學(xué)者來(lái)說(shuō),視頻教程必須看,要不然,哪怕把教材看了幾遍,還是不知道如何下手,尤其是院校里的單片機(jī)教材,學(xué)了之后,面對(duì)真正的單片機(jī)時(shí)可能還是束手無(wú)策;單片機(jī)教材和C語(yǔ)言教材是理論學(xué)習(xí)資料,備忘備查。不要為了節(jié)約成本不用開(kāi)發(fā)板而光用Proteus軟件仿真調(diào)試,這和紙上談兵沒(méi)什么區(qū)別。

3. 要注重理論和實(shí)踐相結(jié)合

單片機(jī)C語(yǔ)言編程理論知識(shí)并不深?yuàn)W,光看書(shū)不動(dòng)手也能明白。但在實(shí)際編程的時(shí)候就沒(méi)那么簡(jiǎn)單了。一個(gè)程序的形成不僅需要有C語(yǔ)言知識(shí),更多需要融入你個(gè)人的編程思路和算法。編程思路和算法決定一個(gè)程序的優(yōu)劣,是單片機(jī)編程的大問(wèn)題,只有在實(shí)際動(dòng)手編寫(xiě)的時(shí)候才會(huì)有深切的感悟。一個(gè)程序能否按照你的意愿正常運(yùn)行就要看你的思路和算法是否正確、合理。如果程序不正常則要反復(fù)調(diào)試(檢查、修改思路和算法),直到成功。這個(gè)過(guò)程耗時(shí)、費(fèi)腦、疲精神,意志不堅(jiān)強(qiáng)者往往被絆倒在這里半途而廢。

學(xué)習(xí)編寫(xiě)程序應(yīng)該按照以下過(guò)程學(xué)習(xí),效果會(huì)更好??吹嚼填}目先試著構(gòu)思自己的編程思路,然后再看教材或視頻教程里的代碼,研究人家的編程思路,注意與自己思路的差異;接下來(lái)就照搬人家的思路親自動(dòng)手編寫(xiě)這個(gè)程序,領(lǐng)會(huì)其中每一條語(yǔ)句的作用;對(duì)有疑問(wèn)的地方試著按照自己的思路修改程序,比較程序運(yùn)行效果,領(lǐng)會(huì)其中的奧妙。每一個(gè)例程都堅(jiān)持按照這個(gè)過(guò)程學(xué)習(xí),你很快會(huì)找到編程的感覺(jué),取其精華去其糟粕,久而久之會(huì)形成你獨(dú)特的編程思想。當(dāng)然,剛開(kāi)始,看別人的程序源代碼就像看天書(shū)一樣,只要硬著頭皮看,看到不懂的關(guān)鍵字和語(yǔ)句就翻書(shū)查閱、對(duì)照。只要能堅(jiān)持下來(lái),學(xué)習(xí)收獲會(huì)事半功倍。在實(shí)踐過(guò)程中不僅要學(xué)會(huì)別人的例程,還要在別人的程序上改進(jìn)和拓展,讓程序產(chǎn)生更強(qiáng)大的功能。同時(shí),還要懂得通過(guò)查閱芯片數(shù)據(jù)手冊(cè)(DATASHEET)里有關(guān)芯片命令和數(shù)據(jù)的讀寫(xiě)時(shí)序來(lái)核對(duì)別人例程的可靠性,如果你覺(jué)得例程不可靠就把它修改過(guò)來(lái),成為是你自己的程序。不僅如此,自己應(yīng)該經(jīng)常找些項(xiàng)目來(lái)做,以鞏固所學(xué)的知識(shí)和積累更多的經(jīng)驗(yàn)。

硬件設(shè)計(jì)

當(dāng)編寫(xiě)自己的程序信手拈來(lái)、閱讀別人的程序能夠發(fā)現(xiàn)問(wèn)題的時(shí)候,說(shuō)明你的單片機(jī)編程水平相當(dāng)不錯(cuò)了。接下來(lái)就應(yīng)該研究硬件了。硬件設(shè)計(jì)包括電路原理設(shè)計(jì)和PCB板設(shè)計(jì)。學(xué)習(xí)做硬件要比學(xué)習(xí)做軟件麻煩,成本更高,周期更長(zhǎng)。但是,學(xué)習(xí)單片機(jī)的最終目的是做產(chǎn)品開(kāi)發(fā)----軟件和硬件相結(jié)合形成完整的控制系統(tǒng)。所以,做硬件也是學(xué)習(xí)單片機(jī)技術(shù)的一個(gè)必學(xué)內(nèi)容。

電路原理設(shè)計(jì)涉及到各種芯片的應(yīng)用,而這些芯片外圍電路的設(shè)計(jì)、典型應(yīng)用電路和與單片機(jī)的連接等在芯片數(shù)據(jù)手冊(cè)(DATASHEET)都能找到答案,前提是要看得懂全英文的數(shù)據(jù)手冊(cè)。否則,照搬別人的設(shè)計(jì)永遠(yuǎn)落在別人的后面,你做的產(chǎn)品就沒(méi)有創(chuàng)意。電子技術(shù)領(lǐng)域的第一手資料(DATASHEET)都是英文,從第一手資料里你所獲得的知識(shí)可能是在教科書(shū)、網(wǎng)絡(luò)文檔和課外讀物等所沒(méi)有的知識(shí)。雖然有些資料也都是在DATASHEET的基礎(chǔ)上撰寫(xiě)的,但內(nèi)容不全面,甚至存在翻譯上的遺漏和錯(cuò)誤。當(dāng)然,閱讀DATASHEET需要具備一定的英文閱讀能力,這也是阻礙單片機(jī)學(xué)習(xí)者晉級(jí)的絆腳石。良好的英文閱讀能力能讓你在單片機(jī)技術(shù)知識(shí)的海洋里自由遨游。

做PCB板就比較簡(jiǎn)單了。只要懂得使用Protel軟件或 AltiumDesigner軟件就沒(méi)問(wèn)題了。但要想做的板子布局美觀、布線合理還得費(fèi)一番功夫了。

嫻熟的單片機(jī)C語(yǔ)言編程、會(huì)使用Protel軟件或 AltiumDesigner軟件設(shè)計(jì)PCB板和具備一定的英文閱讀能力,你就是一個(gè)遇強(qiáng)則強(qiáng)的單片機(jī)高手了。

抗干擾設(shè)計(jì)

在提高硬件系統(tǒng)抗干擾能力的同時(shí),軟件抗干擾以其設(shè)計(jì)靈活、節(jié)省硬件資源、可靠性好越來(lái)越受到重視。下面以MCS-51單片機(jī)系統(tǒng)為例,對(duì)微機(jī)系統(tǒng)軟件抗干擾方法進(jìn)行研究。

抗干擾

在工程實(shí)踐中,軟件抗干擾研究的內(nèi)容主要是:一、消除模擬輸入信號(hào)的噪聲(如數(shù)字濾波技術(shù));二、程序運(yùn)行混亂時(shí)使程序重入正軌的方法。本文針對(duì)后者提出了幾種有效的軟件抗干擾方法。

指令冗余

CPU取指令過(guò)程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾出現(xiàn)錯(cuò)誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)做操作碼,程序?qū)⒊鲥e(cuò)。若“飛” 到了三字節(jié)指令,出錯(cuò)機(jī)率更大。

在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫(xiě)稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個(gè)字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動(dòng)納入正軌。

此外,對(duì)系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。

攔截技術(shù)

所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯(cuò)處理。通常用軟件陷阱來(lái)攔截亂飛的程序。因此先要合理設(shè)計(jì)陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?/span>

(1 )軟件陷阱的設(shè)計(jì)

當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無(wú)法起作用。通過(guò)軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯(cuò)處理。軟件陷阱是指用來(lái)將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱:

(2 ) 陷阱的安排

最后一條應(yīng)填入020000,當(dāng)亂飛程序落到此區(qū),即可自動(dòng)入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開(kāi)放時(shí),在對(duì)應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能及時(shí)捕獲錯(cuò)誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式:

NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計(jì)可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。

考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個(gè)就可以進(jìn)行有效攔截。

軟件“看門狗”技術(shù)

若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過(guò)不斷檢測(cè)程序循環(huán)運(yùn)行時(shí)間,若發(fā)現(xiàn)程序循環(huán)時(shí)間超過(guò)最大循環(huán)運(yùn)行時(shí)間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯(cuò)處理。

“看門狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時(shí)會(huì)破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無(wú)法定時(shí)“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問(wèn)題。

筆者在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時(shí)器T0監(jiān)視定時(shí)器T1,用定時(shí)器T1監(jiān)視主程序,主程序監(jiān)視定時(shí)器T0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統(tǒng)可靠性。對(duì)于需經(jīng)常使用T1定時(shí)器進(jìn)行串口通訊的測(cè)控系統(tǒng),則定時(shí)器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控(如果用的是MCS-52系列單片機(jī),也可用T2代替T1進(jìn)行監(jiān)視)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測(cè)變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加1。在T0中斷服務(wù)程序中通過(guò)檢測(cè)T1Watch的變化情況判定T1運(yùn)行是否正常,在T1中斷服務(wù)程序中檢測(cè)MWatch的變化情況判定主程序是否正常運(yùn)行,在主程序中通過(guò)檢測(cè)T0Watch的變化情況判別T0是否正常工作。若檢測(cè)到某觀測(cè)變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯(cuò)處理程序作排除故障處理。當(dāng)然,對(duì)主程序最大循環(huán)周期、定時(shí)器T0和T1定時(shí)周期應(yīng)予以全盤(pán)合理考慮。限于篇幅不贅述。

抗干擾技術(shù)

單片機(jī)系統(tǒng)因干擾復(fù)位或掉電后復(fù)位均屬非正常復(fù)位,應(yīng)進(jìn)行故障診斷并能自動(dòng)恢復(fù)非正常復(fù)位前的狀態(tài)。

非正常復(fù)位的識(shí)別

程序的執(zhí)行總是從0000H開(kāi)始,導(dǎo)致程序從 0000H開(kāi)始執(zhí)行有四種可能:一、系統(tǒng)開(kāi)機(jī)上電復(fù)位;二、軟件故障復(fù)位;三、看門狗超時(shí)未喂狗硬件復(fù)位; 四、任務(wù)正在執(zhí)行中掉電后來(lái)電復(fù)位。四種情況中除第一種情況外均屬非正常復(fù)位,需加以識(shí)別。

(1 )硬件復(fù)位與軟件復(fù)位的識(shí)別

此處硬件復(fù)位指開(kāi)機(jī)復(fù)位與看門狗復(fù)位,硬件復(fù)位對(duì)寄存器有影響,如復(fù)位后PC=0000H, SP=07H,PSW=00H等。而軟件復(fù)位則對(duì)SP、SPW無(wú)影響。故對(duì)于微機(jī)測(cè)控系統(tǒng),當(dāng)程序正常運(yùn)行時(shí),將SP設(shè)置地址大于07H,或者將PSW的第5位用戶標(biāo)志位在系統(tǒng)正常運(yùn)行時(shí)設(shè)為1。那么系統(tǒng)復(fù)位時(shí)只需檢測(cè)PSW.5標(biāo)志位或SP值便可判此是否硬件復(fù)位。

由于硬件復(fù)位時(shí)片內(nèi)RAM狀態(tài)是隨機(jī)的,而軟件復(fù)位片內(nèi)RAM則可保持復(fù)位前狀態(tài),因此可選取片內(nèi)某一個(gè)或兩個(gè)單元作為上電標(biāo)志。設(shè)40H用來(lái)做上電標(biāo)志,上電標(biāo)志字為78H,若系統(tǒng)復(fù)位后40H單元內(nèi)容不等于78H,則認(rèn)為是硬件復(fù)位,否則認(rèn)為是軟件復(fù)位,轉(zhuǎn)向出錯(cuò)處理。若用兩個(gè)單元作上電標(biāo)志,則這種判別方法的可靠性更高。

(2 )開(kāi)機(jī)復(fù)位與看門狗故障復(fù)位的識(shí)別

開(kāi)機(jī)復(fù)位與看門狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識(shí)別,一般要借助非易失性RAM或者EEROM。當(dāng)系統(tǒng)正常運(yùn)行時(shí),設(shè)置一可掉電保護(hù)的觀測(cè)單元。當(dāng)系統(tǒng)正常運(yùn)行時(shí),在定時(shí)喂狗的中斷服務(wù)程序中使該觀測(cè)單元保持正常值(設(shè)為 AAH),而在主程中將該單元清零,因觀測(cè)單元掉電可保護(hù),則開(kāi)機(jī)時(shí)通過(guò)檢測(cè)該單元是否為正常值可判斷是否看門狗復(fù)位。

(3 )正常開(kāi)機(jī)復(fù)位與非正常開(kāi)機(jī)復(fù)位的識(shí)別

識(shí)別測(cè)控系統(tǒng)中因意外情況如系統(tǒng)掉電等情況引起的開(kāi)機(jī)復(fù)位與正常開(kāi)機(jī)復(fù)位,對(duì)于過(guò)程控制系統(tǒng)尤為重要。如某以時(shí)間為控制標(biāo)準(zhǔn)的測(cè)控系統(tǒng),完成一次測(cè)控任務(wù)需1小時(shí)。在已執(zhí)行測(cè)控50分鐘的情況下,系統(tǒng)電壓異常引起復(fù)位,此時(shí)若系統(tǒng)復(fù)位后又從頭開(kāi)始進(jìn)行測(cè)控則會(huì)造成不必要的時(shí)間消耗。因此可通過(guò)一監(jiān)測(cè)單元對(duì)當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)、系統(tǒng)時(shí)間予以監(jiān)控,將控制過(guò)程分解為若干步或若干時(shí)間段,每執(zhí)行完一步或每運(yùn)行一個(gè)時(shí)間段則對(duì)監(jiān)測(cè)單元置為關(guān)機(jī)允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進(jìn)行測(cè)控任務(wù)或正在執(zhí)某時(shí)間段,則將監(jiān)測(cè)單元置為非正常關(guān)機(jī)值。那么系統(tǒng)復(fù)位后可據(jù)此單元判系統(tǒng)原來(lái)的運(yùn)行狀態(tài),并跳到出錯(cuò)處理程序中恢復(fù)系統(tǒng)原運(yùn)行狀態(tài)。

非正常復(fù)位后系統(tǒng)自恢復(fù)運(yùn)行的程序設(shè)計(jì)

對(duì)順序要求嚴(yán)格的一些過(guò)程控制系統(tǒng),系統(tǒng)非正常復(fù)位否,一般都要求從失控的那一個(gè)模塊或任務(wù)恢復(fù)運(yùn)行。所以測(cè)控系統(tǒng)要作好重要數(shù)據(jù)單元、參數(shù)的備份,如系統(tǒng)運(yùn)行狀態(tài)、系統(tǒng)的進(jìn)程值、當(dāng)前輸入、輸出的值,當(dāng)前時(shí)鐘值、觀測(cè)單元值等,這些數(shù)據(jù)既要定時(shí)備份,同時(shí)若有修改也應(yīng)立即予以備份。

當(dāng)在已判別出系統(tǒng)非正常復(fù)位的情況下,先要恢復(fù)一些必要的系統(tǒng)數(shù)據(jù),如顯示模塊的初始化、片外擴(kuò)展芯片的初始化等。其次再對(duì)測(cè)控系統(tǒng)的系統(tǒng)狀態(tài)、運(yùn)行參數(shù)等予以恢復(fù),包括顯示界面等的恢復(fù)。之后再把復(fù)位前的任務(wù)、參數(shù)、運(yùn)行時(shí)間等恢復(fù), 再進(jìn)入系統(tǒng)運(yùn)行狀態(tài)。

應(yīng)當(dāng)說(shuō)明的是,真實(shí)地恢復(fù)系統(tǒng)的運(yùn)行狀態(tài)需 要極為細(xì)致地對(duì)系統(tǒng)的重要數(shù)據(jù)予以備份,并加以數(shù)據(jù)可靠性檢查,以保證恢復(fù)的數(shù)據(jù)的可靠性。

其次,對(duì)多任務(wù)、多進(jìn)程測(cè)控系統(tǒng),數(shù)據(jù)的恢復(fù)需考慮恢復(fù)的次序問(wèn)題。

系統(tǒng)基本初始化是指對(duì)芯片、顯示、輸入輸出方式等進(jìn)行初始化,要注意輸入輸出的初始化不應(yīng)造成誤動(dòng)作。而復(fù)位前任務(wù)的初始化是指任務(wù)的執(zhí)行狀態(tài)、運(yùn)行時(shí)間等。

對(duì)于軟件抗干擾的一些其它常用方法如數(shù)字濾波、RAM數(shù)據(jù)保護(hù)與糾錯(cuò)等,限于篇幅,本文未作討論。在工程實(shí)踐中通常都是幾種抗干擾方法并用,互相補(bǔ)充 完善,才能取得較好的抗干擾效果。從根本上來(lái)說(shuō),硬件抗干擾是主動(dòng)的,而軟件是抗干擾是被動(dòng)的。細(xì)致周到地分析干擾源,硬件與軟件抗干擾相結(jié)合,完善系統(tǒng)監(jiān)控程序,設(shè)計(jì)一穩(wěn)定可靠的單片機(jī)系統(tǒng)是完全可行的。

單片機(jī)的應(yīng)用

電子技術(shù)中單片機(jī)的應(yīng)用

1、在家用電器領(lǐng)域的應(yīng)用

現(xiàn)在在家用電器的更新、市場(chǎng)開(kāi)拓等方面,單片機(jī)的應(yīng)用越來(lái)越廣泛,比如電子玩具或者高級(jí)的電視游戲機(jī)中,會(huì)應(yīng)用單片機(jī)實(shí)現(xiàn)其控制功能;而洗衣機(jī)可以利用單片機(jī)識(shí)別衣服的種類與臟污程度,從而自動(dòng)選擇洗滌強(qiáng)度與洗滌時(shí)間;在冰箱冷柜中采用單片機(jī)控制可以識(shí)別食物的種類與保鮮程度,實(shí)現(xiàn)冷藏溫度與冷藏時(shí)間的自動(dòng)選擇;微波爐也可以通過(guò)單片機(jī)識(shí)別食物種類從而自動(dòng)確定加熱溫度與加熱時(shí)間等等,這些家用電器在應(yīng)用單片機(jī)技術(shù)后,無(wú)論是性能還是功能,與傳統(tǒng)技術(shù)相比均有長(zhǎng)足的進(jìn)步。

2、在醫(yī)用設(shè)備領(lǐng)域的應(yīng)用

現(xiàn)代醫(yī)療條件越來(lái)越發(fā)達(dá),人們對(duì)醫(yī)療滅菌消毒技術(shù)也越來(lái)越重視,但是一些偏遠(yuǎn)地區(qū)的小醫(yī)院、小診所其消毒滅菌設(shè)備還十分簡(jiǎn)陋,無(wú)法有效的控制消毒質(zhì)量。隨著單片機(jī)技術(shù)的發(fā)展,其體積較小、功能強(qiáng)大、具有靈活的擴(kuò)展性、應(yīng)用方便的特點(diǎn)也越來(lái)越突出,因此在醫(yī)用呼吸機(jī)、分析儀與監(jiān)護(hù)儀、超聲診斷設(shè)備、病床呼叫系統(tǒng)等設(shè)備中得到了廣泛的應(yīng)用。

3、在工業(yè)控制領(lǐng)域的應(yīng)用

其實(shí)最早的單片機(jī)正是從工業(yè)領(lǐng)域開(kāi)始興起的,至今其在工業(yè)控制領(lǐng)域的應(yīng)用仍然十分廣泛,利用單片機(jī)技術(shù)構(gòu)成多種多樣的數(shù)據(jù)采集系統(tǒng)與智能控制系統(tǒng),比如工廠流水線的智能化管理、智能化電梯、報(bào)警系統(tǒng)等等,均是通過(guò)單片機(jī)技術(shù)與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)。

4、在儀器儀表領(lǐng)域的應(yīng)用

上文中也談到單片機(jī)具備集成度高、體積小、較強(qiáng)的控制功能與擴(kuò)展的靈活性等特點(diǎn),并且處理速度快,具有較高的可靠性,所以在智能儀器儀表領(lǐng)域其應(yīng)用也十分廣泛。從某種程度而言,單片機(jī)帶動(dòng)了傳統(tǒng)測(cè)量、控制儀器儀表技術(shù)的一項(xiàng)革命,通過(guò)單片機(jī)技術(shù)實(shí)現(xiàn)了儀器儀表技術(shù)的數(shù)字化、智能化、綜合化以及多功能化,與傳統(tǒng)的電子電路或者數(shù)字電路相比,其功能更強(qiáng)大,綜合性更突出。


51單片機(jī)的結(jié)構(gòu)與功能

基本功能:

1.8位數(shù)據(jù)總線,16位地址總線的CPU;

2.具有布爾處理能力和位處理能力;

3.采用哈佛結(jié)構(gòu),程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器地址空間各自獨(dú)立,便于程序設(shè)計(jì);

4.相同地址的64KB程序存儲(chǔ)器和64KB數(shù)據(jù)存儲(chǔ)器;

5.0-8KB片內(nèi)程序存儲(chǔ)器(8031無(wú),8051有4KB,8052有8KB,89C55有20KB);

6.128字節(jié)片內(nèi)數(shù)據(jù)存儲(chǔ)器(8051有256字節(jié));

7.32根雙向并可以按位尋址的I/O線;

8.兩個(gè)16位定時(shí)/計(jì)數(shù)器(8052有3個(gè));

9.一個(gè)全雙工的串行I/O接口;

10.多個(gè)中斷源的中斷結(jié)構(gòu),具有兩個(gè)中斷優(yōu)先級(jí);

11.片內(nèi)時(shí)鐘振蕩器[1]  。

特點(diǎn):

1.以微處理器(CPU)為核心;

2.CPU與其他部件間通過(guò)三總線連接。

總線: 指能為多個(gè)部件服務(wù)的信息傳送線。


單片機(jī)攻擊技術(shù)

攻擊單片機(jī)主要有四種技術(shù),分別是:

(1)軟件攻擊

該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來(lái)進(jìn)行攻擊。軟件攻擊取得成功的一個(gè)典型事例是對(duì)早期ATMEL AT89C 系列單片機(jī)的攻擊。攻擊者利用了該系列單片機(jī)擦除操作時(shí)序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲(chǔ)器數(shù)據(jù)的操作,從而使加過(guò)密的單片機(jī)變成沒(méi)加密的單片機(jī),然后利用編程器讀出片內(nèi)程序。

(2) 電子探測(cè)攻擊

該技術(shù)通常以高時(shí)間分辨率來(lái)監(jiān)控處理器在正常操作時(shí)所有電源和接口連接的模擬特性,并通過(guò)監(jiān)控它的電磁輻射特性來(lái)實(shí)施攻擊。因?yàn)閱纹瑱C(jī)是一個(gè)活動(dòng)的電子器件,當(dāng)它執(zhí)行不同的指令時(shí),對(duì)應(yīng)的電源功率消耗也相應(yīng)變化。這樣通過(guò)使用特殊的電子測(cè)量?jī)x器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測(cè)這些變化,即可獲取單片機(jī)中的特定關(guān)鍵信息。

(3)過(guò)錯(cuò)產(chǎn)生技術(shù)

該技術(shù)使用異常工作條件來(lái)使處理器出錯(cuò),然后提供額外的訪問(wèn)來(lái)進(jìn)行攻擊。使用最廣泛的過(guò)錯(cuò)產(chǎn)生攻擊手段包括電壓沖擊和時(shí)鐘沖擊。低電壓和高電壓攻擊可用來(lái)禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯(cuò)誤操作。時(shí)鐘瞬態(tài)跳變也許會(huì)復(fù)位保護(hù)電路而不會(huì)破壞受保護(hù)信息。電源和時(shí)鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。

(4)探針技術(shù)

該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機(jī)以達(dá)到攻擊目的。為了方便起見(jiàn),人們將以上四種攻擊技術(shù)分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然后借助半導(dǎo)體測(cè)試設(shè)備、顯微鏡和微定位器,在專門的實(shí)驗(yàn)室花上幾小時(shí)甚至幾周時(shí)間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會(huì)被物理?yè)p壞。在某些場(chǎng)合非侵入型攻擊是特別危險(xiǎn)的,但是因?yàn)榉乔秩胄凸羲柙O(shè)備通??梢宰灾坪蜕?jí),因此非常廉價(jià)。

大部分非侵入型攻擊需要攻擊者具備良好的處理器知識(shí)和軟件知識(shí)。與之相反,侵入型的探針攻擊則不需要太多的初始知識(shí),而且通??捎靡徽紫嗨频募夹g(shù)對(duì)付寬范圍的產(chǎn)品。

加密方法

科研成果保護(hù)是每一個(gè)科研人員最關(guān)心的事情,加密方法有軟件加密,硬件加密,軟硬件綜合加密,時(shí)間加密,錯(cuò)誤引導(dǎo)加密,專利保護(hù)等措施有矛就有盾,有盾就有矛,有矛有盾,才促進(jìn)矛盾質(zhì)量水平的提高。加密只講盾,現(xiàn)先講一個(gè)軟件加密:利用MCS-51 中A5 指令加密,其實(shí)世界上所有資料,包括英文資料都沒(méi)有講這條指令,其實(shí)這是很好的加密指令。A5 功能是二字節(jié)空操作指令。加密方法:在A5 后加一個(gè)二字節(jié)或三字節(jié)操作碼,因?yàn)樗蟹磪R編軟件都不會(huì)反匯編A5 指令,造成正常程序反匯編亂套,執(zhí)行程序無(wú)問(wèn)題仿制者就不能改變你的源程序。

硬件加密:8031/8052單片機(jī)就是8031/8052掩模產(chǎn)品中的不合格產(chǎn)品,內(nèi)部有ROM,可以把8031/8052 當(dāng)8751/8752 來(lái)用,再擴(kuò)展外部程序器,然后調(diào)用8031 內(nèi)部子程序。當(dāng)然你所選的同批8031芯片的首地址及所需用的中斷入口均應(yīng)轉(zhuǎn)到外部程序區(qū)。

硬件加密

用高電壓或激光燒斷某條引腳,使其讀不到內(nèi)部程序,用高電壓會(huì)造成一些器件損壞重要RAM 數(shù)據(jù)采用電池(大電容,街機(jī)采用的辦法)保護(hù),拔出芯片數(shù)據(jù)失去機(jī)器不能起動(dòng),或能初始化,但不能運(yùn)行。

用真假方法加密

擦除芯片標(biāo)識(shí)

把8X52單片機(jī),標(biāo)成8X51 單片機(jī),并用到后128B的RAM 等方法,把AT90S8252 當(dāng)AT89C52,初始化后程序段中并用到EEPROM 內(nèi)容,你再去聯(lián)想吧!

用激光(或絲印)打上其它標(biāo)識(shí)如有的單片機(jī)引腳兼容,有的又不是同一種單片機(jī),可張冠李戴,只能意會(huì)了,這要求你知識(shí)面廣一點(diǎn) 。

用最新出廠編號(hào)的單片機(jī),如2000 年后的AT89C 就難解密,或新的單片機(jī)品種,如AVR 單片機(jī)。

DIP封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定制ASIC,或軟封裝,用不需外晶振的單片機(jī)工作(如AVR 單片機(jī)中的AT90S1200),使用更復(fù)雜的單片機(jī),F(xiàn)PGA+AVR+SRAM=AT40K系列。

硬件加密與軟件加密只是為敘說(shuō)方便而分開(kāi)來(lái)講,其實(shí)它們是分不開(kāi)的,互相支撐,互相依存的軟件加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以………….....

利用單片機(jī)未公開(kāi),未被利用的標(biāo)志位或單元,作為軟件標(biāo)志位,如8031/8051有一個(gè)用戶標(biāo)志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二字節(jié)或三字節(jié)操作碼,在無(wú)程序的空單元也加上程序機(jī)器碼,最好要加巧妙一點(diǎn)用大容量芯片,用市場(chǎng)上仿真器不能仿真的芯片,如內(nèi)部程序?yàn)?4KB 或大于64KB 的器件,如:AVR 單片機(jī)中ATmega103 的Flash 程序存儲(chǔ)器為128KBAT89S8252/AT89S53中有EEPROM,關(guān)鍵數(shù)據(jù)存放在EEPROM 中,或程序初始化時(shí)把密碼寫(xiě)到EEPROM 中,程序執(zhí)行時(shí)再查密碼正確與否,盡量不讓人家讀懂程序。關(guān)于單片機(jī)加密,講到這里,就算拋磚引玉。


單片機(jī)故障的排除

1單片機(jī)正常工作的三個(gè)條件

單片機(jī)工作的三個(gè)條件分別是電源、時(shí)鐘晶振、復(fù)位。當(dāng)單片機(jī)不能正常工作時(shí),我們首先就要檢查這三個(gè)條件,用電壓表或者萬(wàn)用表檢測(cè)他的電源和接地腳,檢測(cè)兩個(gè)引腳之間的電壓是不是5V左右;對(duì)于時(shí)鐘晶體振蕩有沒(méi)有正常工作,我們最好用示波器進(jìn)行檢測(cè),看能否檢測(cè)到相應(yīng)頻率的正弦波脈沖;復(fù)位檢測(cè)比較簡(jiǎn)單,單片機(jī)的復(fù)位電平一般是高電平復(fù)位,單片機(jī)在接通電源的時(shí)候一般復(fù)位引腳上會(huì)出現(xiàn)5V左右的高電平,另外在按下復(fù)位按鍵時(shí),復(fù)位引腳上也會(huì)出現(xiàn)高電平,用一般的電壓表或者萬(wàn)用表都可以進(jìn)行檢測(cè)。

2單片機(jī)內(nèi)部是否正常工作的檢測(cè)

單片機(jī)內(nèi)部有沒(méi)有正常工作,我們主要是通過(guò)寫(xiě)入程序的方式來(lái)進(jìn)行檢測(cè)和排查。這個(gè)檢測(cè)需要有“燒入”代碼的硬件和軟件才行,檢測(cè)的原理就是通過(guò)“燒入”代碼的硬件和軟件,將一段帶有檢測(cè)功能的正常代碼“燒入”到單片機(jī)。檢查兩個(gè)方面:第一就是能不能將目標(biāo)代碼正常寫(xiě)入單片機(jī),不能正常寫(xiě)入單片機(jī)時(shí),說(shuō)明單片機(jī)已經(jīng)損壞,需要更換同型號(hào)的單片機(jī);第二就是目標(biāo)代碼可以正常寫(xiě)入單片機(jī),寫(xiě)入后的效果是不是就是程序設(shè)定的功能,如果是說(shuō)明單片機(jī)正常。

單片機(jī)在更換時(shí),我們最好采用同型號(hào)的單片機(jī),然后寫(xiě)入公司給予的目標(biāo)代碼,單片機(jī)的價(jià)格目前一般比較便宜,零售價(jià)格大概5元左右。


單片機(jī)發(fā)展現(xiàn)狀

單片機(jī)(Microcontrollers)誕生于1971年,經(jīng)歷了SCM、MCU、SoC三大階段,早期的SCM單片機(jī)都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列MCU系統(tǒng)。基于這一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開(kāi)始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別是后來(lái)的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。

而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。高端的32位Soc單片機(jī)主頻已經(jīng)超過(guò)300MHz,性能直追90年代中期的專用處理器,而普通的型號(hào)出廠價(jià)格跌落至1美元,最高端的型號(hào)也只有10美元。

當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開(kāi)發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和手機(jī)核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。

主要階段

早期階段

SCM即單片微型計(jì)算機(jī)(Microcontrollers)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)?!皠?chuàng)新模式”獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。在開(kāi)創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒(méi)。

中期發(fā)展

MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力。它所涉及的領(lǐng)域都與對(duì)象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來(lái)看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。

Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢(shì),將MCS-51從單片微型計(jì)算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時(shí),不要忘記Intel和Philips的歷史功績(jī)。

當(dāng)前趨勢(shì)

SoC嵌入式系統(tǒng)(System on Chip)式的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決,因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢(shì)。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會(huì)有較大的發(fā)展。因此,對(duì)單片機(jī)的理解可以從單片微型計(jì)算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。

早期發(fā)展

1971年intel公司研制出世界上第一個(gè)4位的微處理器;Intel公司的霍夫研制成功世界上第一塊4位微處理器芯片Intel 4004,標(biāo)志著第一代微處理器問(wèn)世,微處理器和微機(jī)時(shí)代從此開(kāi)始。因發(fā)明微處理器,霍夫被英國(guó)《經(jīng)濟(jì)學(xué)家》雜志列為“二戰(zhàn)以來(lái)最有影響力的7位科學(xué)家”之一。

1971年11月,Intel推出MCS-4微型計(jì)算機(jī)系統(tǒng)(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微處理器)其中4004(下圖)包含2300個(gè)晶體管,尺寸規(guī)格為3mm×4mm,計(jì)算性能遠(yuǎn)遠(yuǎn)超過(guò)當(dāng)年的ENIAC,最初售價(jià)為200美元。

1972年4月,霍夫等人開(kāi)發(fā)出第一個(gè)8位微處理器Intel 8008。由于8008采用的是P溝道MOS微處理器,因此仍屬第一代微處理器。

1973年intel公司研制出8位的微處理器8080;1973年8月,霍夫等人研制出8位微處理器Intel 8080,以N溝道MOS電路取代了P溝道,第二代微處理器就此誕生。

主頻2MHz的8080芯片運(yùn)算速度比8008快10倍,可存取64KB存儲(chǔ)器,使用了基于6微米技術(shù)的6000個(gè)晶體管,處理速度為0.64MIPS(Million Instructions Per Second )。

1975年4月,MITS發(fā)布第一個(gè)通用型Altair 8800,售價(jià)375美元,帶有1KB存儲(chǔ)器。這是世界上第一臺(tái)微型計(jì)算機(jī)。

1976年intel公司研制出MCS-48系列8位的單片機(jī),這也是單片機(jī)的問(wèn)世。

Zilog公司于1976年開(kāi)發(fā)的Z80微處理器,廣泛用于微型計(jì)算機(jī)和工業(yè)自動(dòng)控制設(shè)備。當(dāng)時(shí),Zilog、Motorola和Intel在微處理器領(lǐng)域三足鼎立。

20世紀(jì)80年代初,Intel公司在MCS-48系列單片機(jī)的基礎(chǔ)上,推出了MCS-51系列8位高檔單片機(jī)。MCS-51系列單片機(jī)無(wú)論是片內(nèi)RAM容量,I/O口功能,系統(tǒng)擴(kuò)展方面都有了很大的提高。




相關(guān)資訊

拍明芯城微信圖標(biāo)

各大手機(jī)應(yīng)用商城搜索“拍明芯城”

下載客戶端,隨時(shí)隨地買賣元器件!

拍明芯城公眾號(hào)
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號(hào)
XX性欧美肥妇精品久久久久久,51精品国自产在线,国产欧美日韩,日韩中文字幕

          最近免费中文字幕MV在线视频3| 国产精品无码MV在线观看| JIZZJIZZ日本高潮喷水| 免费啪啪A片AAAA片老太婆交| 亚洲码欧美码一区二区三区| 国产 校园 另类 小说区| 亚洲国产精品久久久久久久| 麻豆国产乱码人妻潘甜甜| 成熟丰满熟妇高潮XXXXXA片| 一区二区视频| 亚洲AV无码成人精品区在线观看| 亚洲国产精品日韩AV不卡在线| 日韩精品无码一区二区| 亚洲精品一区中文字幕乱码| 国产无遮挡又黄又爽在线观看| 亚欧洲精品在线视频免费观看| 亚洲日韩一区二区| 亚洲香蕉成人AV网站在线观看| 成人H视频在线观看| 性色AV无码久久一区二区三区 | 播播网色播播| 黑人巨大精品欧美| 国产亚洲精品A片久久久| 男人撕开奶罩揉吮奶头视频| 成年免费a级毛片免费看无码| 熟妇人妻无码中文字幕| 国产精品特级毛片一区二区三区| 国内最真实的XXXX人伦| JIZZYOU中国少妇| 久久久亚洲精华液精华液精华液 | 熟妇中国 @TUBE UMTV| 丰满少妇作爱视频免费观看| 激情五月色综合国产精品| JΑPΑN丰满人妻HDXXXX| 欧美做爰又粗又大免费看| 中国丰满熟妇XXXX性| 日韩精品无码一区二区三区| 粗大的内捧猛烈进出在线视频| 中年熟妇的大肥唇熟女影视| 国产中文字字幕乱码无限| 国产激情一区二区三区|